2 GOTO10 5 DIME$(20,22),D$(20),ZX(20),ZY(20),QA(8),QB(8),TW(20),H$(20,22):RETURN 10 REM JERRY CARON 12 REM BERKLEY ST. 14 REM BERKLEY,MA. 20 REM INITIALIZE 30 PRINT"[147] FIND A WORD" 40 PRINT"ARE YOU USING":PRINT"A VIC 20[146] OR A 64[146]" 42 INPUT"ENTER 20 OR 64 64[157][157][157][157]";MA:IFMA<>20AND MA<>64THEN42 44 INPUT"LOAD A PREVIOUS PUZZLE (Y OR N)";LP$ 45 IFLP$<>"Y"ANDLP$<>"N"THENPRINT"[145][145][145][145]":GOTO44 46 IFLP$="Y"THENGOSUB1000 55 IFMA=20THENPOKE36879,8 56 PRINT:PRINT 57 INPUT" PUZZLE SIZE (10-20) 20[157][157][157][157]";MS 58 IFMS<10ORMS>20THEN57 59 GOSUB950 60 PRINT"[147] SETTING UP PLEASE WAIT..." 70 IFSW$<>"Y"THENGOSUB5 80 FORI=1TOMS:FORJ=1TOMS:E$(I,J)="":NEXT:NEXT 90 RESTORE:FORJ=1TOOP:FORI=1TO8 : READQA(I),QB(I):NEXT:NEXT 100 DATA.,-1,1,-1,1,.,1,1,.,1,-1,1,-1,.,-1,-1,.,1,1,-1,1,1,1,.,.,1,1,-1,1,1,1,. 103 DATA.,1,1,.,.,-1,-1,.,.,1,1,.,.,-1,-1,.,.,1,1,.,.,1,1,.,.,1,1,.,.,1,1,. 108 IFSW$="Y"THEN310 110 FORI=1TOMS:D$(I)="":ZX(I)=0:ZY(I)=0:NEXT 200 REM INPUT WORDS 205 IFLP$="Y"THEN310 210 PRINT"[147]HOW MANY WORDS (MAX ";MS-OP+1;")" 220 INPUT ND$ 230 PRINT:NW=VAL(ND$):IFNW<1ORNW>MS-OP+1THEN210 240 PRINT"[147] NOW TYPE IN THE WORDS" 250 PRINT"EACH MUST BE BETWEEN 3 AND ";INT(.76*MS);" LETTERS" 260 FORI=1TONW 270 PRINTI"[157]) "; 280 INPUT"[157]";D$(I) 290 IF LEN(D$(I))<3 OR LEN(D$(I))>INT(.76*MS)THENPRINTCHR$(13)"[145][145][145]":GOTO270 300 PRINT:NEXT 310 OPEN4,4 315 PRINT#4,SPC(MS-5);CHR$(14)+"FIND THE WORDS"+CHR$(15):PRINT#4:PRINT#4 316 IFLP$="Y"THENPRINT#4,"PUZZLE NAME : ";NP$:PRINT#4 317 FORR=1TO3*MS+4:PRINT#4,"*";:NEXTR:PRINT#4:PRINT#4 320 FORI=1TONW 330 PRINT#4,D$(I);SPC(MS-LEN(D$(I)));:IFI=4ORI=8ORI=12ORI=16THENPRINT#4,: 340 NEXT 350 PRINT#4,:PRINT#4,:FORR=1TO3*MS+4 :PRINT#4,"*";:NEXTR:PRINT#4,:PRINT#4,"*"; 360 PRINT#4," ";SPC(3*MS+1);"*" 370 CLOSE4:IFLP$="Y"THEN700 380 IFEP$="Y"THEN700 400 REM PLACE 410 PRINT"[147] MAKING GRID " 420 PRINT" PLEASE WAIT" 430 PW=0:FORAB=1TONW:PW=PW+1 440 ZX(PW)=INT(MS*RND(1)+1) 450 ZY(PW)=INT(MS*RND(1)+1) 460 DR=INT(8*RND(1)+1):TW(PW)=DR 470 CX=ZX(PW)+LEN(D$(PW))*QA(DR):CY=ZY(PW)+LEN(D$(PW))*QB(DR) 480 IFCX<1ORCX>MSORCY<1ORCY>MSTHEN440 490 F=0:FORCK=0TOLEN(D$(PW))-1 500 Z1$=MID$(D$(PW),CK+1,1):Z2$=E$(ZX(PW)+CK*QA(DR),ZY(PW)+CK*QB(DR)) 510 IFZ2$<>""ANDZ1$<>Z2$THENF=1 520 NEXT:IFF=1THEN440 530 FORCK=0TOLEN( D$(PW))-1 540 Z1$=MID$(D$(PW),CK+1,1):E$(ZX(PW)+CK*QA(DR),ZY(PW)+CK*QB(DR))=Z1$ 550 NEXT 560 NEXT AB 600 REM PRINT SEARCH MATRIX 610 PRINT"[147]" 620 PRINT"":FORY=1TOMS:FORX=1TOMS 621 IFMS<20ANDDX=1THENPRINT 622 H$(X,Y)=E$(X,Y):IFE$(X,Y)=""THENH$(X,Y)="-" 625 IFE$(X,Y)=""THENE$(X,Y)=MID$(D$(NW*RND(1)+1),3*RND(1)+1,1) 640 IFMA=64THENPRINTE$(X,Y);" ";:GOTO660 650 IFMA=20THENPRINTE$(X,Y); 660 NEXT 670 IFMA=20THENPRINT 690 C=0:NEXT 700 OPEN4,4 710 FORY=1TOMS:PRINT#4,"* ";:FORX=1TOMS 720 PRINT#4,E$(X,Y);" "; 730 NEXT:PRINT#4,"*":PRINT#4,"*";SPC(3*MS+2);"*":NEXT 740 FORR=1TO3*MS+4:PRINT#4,"*";:NEXTR:PRINT#4,:PRINT#4:CLOSE4 800 PRINT"[147]":LP$="":GS$="":SP$="":S$="" :EP$="":SW$="" 805 INPUT"WANT THE ANSWERS Y OR N Y[157][157][157]";GS$ 807 IFGS$="Y"THENPRINT" DON'T PEEK!":GOSUB900 808 PRINT" SAVE THE PUZZLE (Y OR N)"; 809 INPUTSP$:IFSP$="Y"THENINPUT" NAME OF PUZZLE";NP$:NP$=NP$+".WS":GOSUB1100 810 INPUT"Y[146]ES TO RUN AGAIN Y[157][157][157]";S$:IFS$<>"Y"THENEND 820 INPUT"WANT EXACT SAME PUZZLE (Y OR N)";EP$:IFEP$="Y"THEN310 830 INPUT"WANT THE SAME WORDS (Y OR N)";SW$:IFSW$="Y" THEN1200 840 IFEP$="N"THENCLR:GOTO44 860 PRINT"[147] PROGRAM OVER":END 900 OPEN4,4 903 FORI=1TO10-2*MS:PRINT#4:NEXT 910 FORY=1TOMS :FORX=1TOMS 911 PRINT#4,H$(X,Y);" "; 920 NEXT:PRINT#4:NEXT 930 PRINT#4:CLOSE4:RETURN 940 REM DIRECTION OPTION MENU 950 PRINT"[147] WORD DIRECTION OPTIONS [146]" 960 PRINT" 1. EVERY DIRECTION" 965 PRINT" 2. NO REVERSED WORDS" 970 PRINT" 3. NO DIAGONAL WORDS" 975 PRINT" 4. NO DIAGONAL OR REVERSED WORDS" 980 INPUT"CHOOSE OPTION[146] (1-4) 1[157][157][157]";OP 982 IFOP<1OROP>4THENPRINT"[145][145][145]":GOTO980 985 RETURN 1000 REM LOAD ROUTINE***************** 1005 OPEN15,8,15:PRINT#15,"I0" 1010 PRINT"NAME OF PUZZLE";:INPUTNP$:NP$=NP$+".WS" 1020 OPEN1,8,8,NP$+",S,R" 1025 INPUT#15,E,E$,E1,E2 1027 IFETHENPRINT"PROGRAM ABORTED *ERROR* ";E$:CLOSE1:CLOSE15:END 1030 INPUT#1,MS 1031 INPUT#1,NW 1032 INPUT#1,OP 1035 GOSUB5 1040 FORY=1TOMS:FORX=1TOMS 1050 INPUT#1,E$(X,Y) 1060 NEXT:NEXT 1065 FORI=1TONW:INPUT#1,D$(I):NEXT 1066 FORY=1TOMS:FORX=1TOMS 1067 INPUT#1,H$(X,Y) 1068 NEXT:NEXT 1070 CLOSE1:CLOSE15 1080 GOTO310 1100 REM SAVE ROUTINE***************** 1101 PRINT"SAVING PUZZLE" 1103 OPEN15,8,15:PRINT#15,"I0" 1110 OPEN1,8,8,"0:"+NP$+",S,W" 1115 INPUT#15,E,E$,E1,E2:IFETHENPRINT"PRG. ABORTED *ERROR* ";E$:CLOSE15:END 1120 PRINT#1,MS 1121 PRINT#1,NW 1125 PRINT#1,OP 1130 FORY=1TOMS:FORX=1TOMS 1140 PRINT#1,E$(X,Y) 1150 NEXT:NEXT 1155 FORI=1TONW:PRINT#1,D$(I):NEXT 1158 FORY=1TOMS:FORX=1TOMS 1159 PRINT#1,H$(X,Y) 1160 NEXT:NEXT 1165 CLOSE1:CLOSE15 1170 RETURN 1200 PRINT"PLEASE WAIT":FORX=1TO20:FORY=1TO22:E$(X,Y)="":H$(X,Y)="":NEXT:NEXT 1210 FORX=1TO20:ZX(X)=0:ZY(X)=0:TW(X)=0:NEXT:FORX=1TO8:QA(X)=0:QB(X)=0:NEXT 1220 GOTO59